/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rh.game;

import com.rh.game.chat.ChatImage;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 *
 * @author Hayden
 */
public interface GameObject {
    public static final List<GameObject> EMPTY_LIST = Collections.unmodifiableList(new ArrayList<GameObject>());
    public static final GameObject NULL = new NullInstance();
    
    static class NullInstance implements GameObject {
        private NullInstance()  { super(); }
        
        public String getID()  { return ""; }
        public Location getLocation()  { return Location.NULL; }
        public void setLocation(Location pLoc)  {  }
        public ChatImage getImage()  { return ChatImage.NULL; }
        public List<MagicalEffect> getEffects()  { return MagicalEffect.EMPTY_LIST; }
        public String toString()  { return "NULL"; }
    }
    
    String getID();
    Location getLocation();
    void setLocation(Location pLoc);
    ChatImage getImage();
    List<MagicalEffect> getEffects();
}
